home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-04-12 | 48.6 KB | 1,187 lines |
- Newsgroups: comp.lang.postscript,comp.answers,news.answers
- Path: bloom-beacon.mit.edu!news.media.mit.edu!uhog.mit.edu!news.intercon.com!howland.reston.ans.net!pipex!uunet!brunix!doorknob.cs.brown.edu!jgm
- From: Jonathan Monsarrat <postscript-request@cs.brown.edu>
- Subject: PostScript monthly FAQ v2.2 12-26-93 [01-04 of 11]
- Content-Type: text
- Message-ID: <JGM.94Apr11234438@chekov.cs.brown.edu>
- Followup-To: poster
- Summary: Useful facts about the PostScript graphics programming language
- Sender: news@cs.brown.edu
- Supersedes: <JGM.93Apr16124153@vegas.cs.brown.edu>
- Reply-To: postscript-request@cs.brown.edu (PostScript FAQ comments address)
- Organization: Brown University Department of Computer Science
- Mime-Version: 1.0
- Date: Tue, 12 Apr 1994 04:44:38 GMT
- Approved: news-answers-request@MIT.Edu
- Expires: Thu, 12 May 1994 00:00:00 GMT
- Lines: 1169
- Xref: bloom-beacon.mit.edu comp.lang.postscript:9150 comp.answers:4866 news.answers:17932
-
- Archive-name: postscript/faq/part1-4
- Last-modified: 1993/12/26
- Version: 2.2
-
- -- PostScript --
-
- Answers to Questions
-
- (the comp.lang.postscript FAQ v2.2)
-
- Jon Monsarrat
-
- jgm@cs.brown.edu
-
-
-
-
-
-
- This FAQ is formatted as a digest.
-
- Most news readers can skip from one question
-
- to the next by pressing control-G.
-
-
- Changes since the last version are marked with a '|' in the table
- of contents and in the sections in the text-only format of the FAQ.
-
- Now that there is Linux and NetBSD and BSD 386 UNIX IBM PC (and
- clone) users can run any of the X-windows and UNIX programs in the
- utilities section. See comp.os.linux. Also, there is now
- GhostScript for the Macintosh.
-
- Many thanks to Dan Carrigan for reformatting the books and
- publishers section.
-
- The utilities index from the comp.sources.postscript FAQ will be
- posted in comp.lang.postscript now too.
-
- Please help fix the FAQ! All comments should be mailed to
- jgm@cs.brown.edu. My favorite way to receive a change suggestion is
- when it is accompanied by a section of the FAQ that is edited and
- mailed to me verbatim as an example. If you would like to
- contribute, please read the section ``about the FAQ'' first. Thank
- you!
-
- Books and programs are referred to by name only. See the book
- sections for book information, and the comp.sources.postscript FAQ
- for a full list of all PostScript related programs. I have archived
- a number of the small utilities in
- wilma.cs.brown.edu:pub/postscript. You can get the
- comp.sources.postscript FAQ from
- wilma.cs.brown.edu:pub/comp.sources.postscript.
-
- Related FAQs: comp.text, comp.text.tex, comp.fonts, comp.graphics,
- comp.sys.mac.apps, comp.sources.postscript.
-
- Table of Contents
-
-
- This FAQ has 11 sections. It is available by anonymous ftp to
- wilma.cs.brown.edu:pub/comp.lang.postscript/FAQ.txt in ASCII, and
- there are also LaTeX, DVI, and PostScript formats.
-
-
- 1 General Questions
- | 1.1 What is PostScript?
- 1.2 How can I tell how many pages my document will have?
- 1.3 How can I print just one page or a few pages from a big
- 1.4 How can I print more than one page per sheet of paper?
- | 1.5 How can I edit a PostScript picture?
- 1.6 How can I print PostScript on a non-PostScript printer?
- | 1.7 How do I print a file containing 8-bit characters?
- 1.8 What other graphics languages are there?
- 2 Printers
- 2.1 How can I get my printer to talk back to me?
- | 2.2 Should I leave my printer on?
- | 2.3 How do you print double-sided on a single-sided printer?
- 2.4 How do I suppress the power-on start page?
- 2.5 How do I make a downloaded font ``persistent''?
- 2.6 How do I remove a persistent (``permanent'') downloaded font?
- 2.7 How do I reset the printer without power-cycling?
- 2.8 About saving files
- | 2.9 What's the control-D business?
- 2.10 Why does the printer say ``still busy'' when my document is
- 2.11 How should I set up my spoolers?
- | 2.12 What are PPD files?
- | 2.13 What's a timeout error?
- 3 Formats and Conversions
- 3.1 How can I convert PostScript to some other graphics format?
- | 3.2 How can I convert HPGL to PostScript?
- 3.3 How can I convert DVI to PostScript?
- 3.4 How can I convert HP Laserjet language (PCL) to PostScript?
- 3.5 How can I convert TeX PK format font to PostScript?
- 3.6 How do I embed PostScript into troff?
- 3.7 How do I embed PostScript into LaTeX or TeX?
- 3.8 How can I convert an image to PostScript?
- 3.9 How can I convert ASCII text to PostScript?
- 3.10 How can I convert PostScript to ASCII?
- | 3.11 How do I convert between PFB, PFA, Mac, PFM, and AFM?
- 4 Fonts
- | 4.1 What are .PFB and .PFA files?
- | 4.2 How does Macintosh Store PostScript Fonts?
- 4.3 How can I convert a PostScript font to TeX's PK format?
- 4.4 Why are Adobe fonts hidden?
- 4.5 How do I get bitmap representations of Adobe fonts?
- 4.6 What are some good ftp sites for fonts?
- 4.7 How can I re-encode a font?
- 4.8 What's the difference between a Type 1 and a Type 3 font?
- | 4.9 What vendors sell fonts for PostScript printers?
- 4.10 What are ATM fonts?
- 4.11 What are Multiple Master Fonts?
- 4.12 Do I need a Level Two printer to use Multiple Master Fonts?
- 4.13 What are Type 4 fonts?
- 4.14 What are Type 5 fonts?
- 4.15 Is there an editor for Type 1 Fonts?
- 5 Books
- 5.1 Books
- 5.2 Publishers
- 6 About Adobe
- 6.1 How do I get in touch with Adobe?
- 6.2 What can Adobe do for me?
- 7 Programming in PostScript
- 7.1 What is PostScript level 2?
- 7.2 Should I learn level 2 PostScript?
- 7.3 Where can I find examples of PostScript code?
- 7.4 What is the physical size of the page?
- 7.5 What is the Imagable Area of the page
- 7.6 Why can't I do a pathforall after a charpath ?
- 7.7 How do I center a string of text around a point?
- 7.8 How can I concatenate two strings together?
- 7.9 What do I do when I get stack overflow/underflow?
- 7.10 How can I print in landscape mode?
- 8 Computer-specific PostScript
- 8.1 Sun Workstations
- 8.2 IBM PC
- 8.3 Apple Macintosh
- 9 Encapsulated PostScript
- 9.1 What is Encapsulated PostScript?
- 9.2 What are EPSI and EPSF?
- 9.3 How do I convert PostScript to EPS?
- 9.4 How do I get the bounding box of a PostScript picture?
- 10 About The Comp.Lang.PostScript FAQ (and Usenet Guide to
- 10.1 The PostScript FAQ: What is it?
- 10.2 How to get the FAQ files
- 10.3 How to write a FAQ answer
- 10.4 The FAQ can contain LaTeX and PostScript inserts
- 10.5 Revising the FAQ
- 10.6 How to submit new information
- 10.7 How to add a program description to the FAQ index
- 10.8 How to add a book description to the FAQ
- 10.9 Questions that need answers
- 11 About PostScript 2
- 11.1 What printers support Level 2 PostScript?
- 11.2 What is PostScript Level 2?
- 11.3 [ Color Extensions ]
- 11.4 [ Composite Font Extensions ]
- 11.5 [ Display PostScript Extensions ]
- 11.6 [ Overview of Level 2 Features ]
- 11.7 Filters
- 11.8 Binary Encoding
- 11.9 Optimized graphics operators
- 11.10 Optimized text operators
- 11.11 Forms
- 11.12 Patterns
- 11.13 Images
- 11.14 Composite Fonts
- 11.15 New Color Spaces
- 11.16 New screening/halftoning technology
- 11.17 Improved printer support features
- 11.18 Interpreter parameters
- 11.19 Resources
- 11.20 Dictionaries
- 11.21 When did Level 2 products come available?
- 11.22 Are Level 1 and Level 2 implementations compatible?
-
-
-
- Subject: 1 General Questions
-
-
- Subject: 1.1 What is PostScript?
-
- PostScript is a page description programming language.
-
- It is perhaps the most versatile and loved language for printers,
- being used in printers world-wide. It is capable of drawing to
- computer screens and any kind of drawing device. PostScript is
- interpreted, stack based and has latent typing. It somewhat
- resembles the computer language FORTH.
-
- A number of programmers write PostScript programs directly for a
- | variety of drawing applications. The NeXTSTEP Operating System,
- | running on Intel-486 and Motorola machines, uses Display
- | PostScript Level II to manage the display. However, PostScript
- programs are usually documents meant to be printed that have been
- generated by a program written in some compiled language.
-
-
- Subject: 1.2 How can I tell how many pages my document will have?
-
- The easiest way to count pages is view your document on-line with a
- PostScript previewer. Some previewers like Ghostview and GSPreview
- count the pages for you. (See the comp.sources.postscript FAQ,
- which has a section ``PostScript Interpreters and Utilities''.)
-
- If your document is generated by a program compliant with the
- Document Structuring Conventions, you should be able to just count
- the number of ``%%Page:'' comments imbedded in the document.
- With UNIX you can type
-
- grep -c %%Page: document.ps
-
- to do this counting. (See Section 9, ``Encapsulated PostScript''.)
-
- The only completely reliable way to count pages is to ask the
- printer after the job is printed. PostScript printers maintain a
- page counter that can be queried before and and after the job is
- printed, and the page count is a simple subtraction. This tends to
- require rather sophisticated spooling systems and a communications
- channel that is bidirectional. However, some printers allow you to
- submit jobs on one port, and issue queries on another.
-
- Send this PostScript through a bidirectional I/O port and you'll
- get back the page count, nominally the total number of pages
- printed since manufacture:
-
- statusdict begin pagecount == end flush
-
- Experts using a level 2 printer can use the SerialOff.PS and
- SerialEHandlder.ps programs to communicate bidirectionally to the
- printer.
-
-
- Subject: 1.3 How can I print just one page or a few pages from a big
- document? How can I print pages in reverse order?
-
- Try using a host-specific program, like the UNIX command psrev,
- which is part of the TranScript suite of software from Adobe
- Systems. Or use the more general utilities Ghostview, psutils or
- psxlate.
-
- There is no guarantee that a given PostScript document can be split
- in such a manner. The reason is that some programs which generate
- PostScript code don't conform to the Adobe Document Structuring
- Conventions (DSC). (See Section 9, ``Encapsulated PostScript''.) A
- notable example of this is Microsoft Word.
-
-
- Subject: 1.4 How can I print more than one page per sheet of paper?
-
- Use psnup or pstext or enscript.
-
- These programs redefine the PostScript ``showpage'' command to do
- multiple PostScript pages per physical page. If one program doesn't
- work with a complex document, try out other ones.
-
- Some PostScript programs can't work with these programs because
- they break the EPS conventions (See Section 9, ``Encapsulated
- PostScript''.). The reason is that some Postscript operators (such
- as initgraphics, the list is in the Red book) change the printer
- state so "violently", that software trying to do things like n-up
- will get confused. Theoretically, an EPS shouldn't have any of
- these operators, but it may not really be an EPS, or there may be a
- weird interaction between TeX, the EPS and the inclusion mechanism
- that breaks psnup.
-
-
- Subject: 1.5 How can I edit a PostScript picture?
-
- If you know the PostScript programming language, just use any text
- editor to edit the code directly.
-
- If you want to do it visually, you can use Canvas on the Macintosh.
- | Arts Letters software package from Computer Support Corporation is
- | supposed to be able to read arbitrary EPS files, using a software
- | converter called Decipher. Also, Island Graphics has a trio of
- | software packages called, appropriately, Island Draw/Paint/Write.
- | This is also supposed to include a full-blown PostScript
- | interpreter, and be able to read and edit arbitrary PostScript
- | files.
-
-
- Subject: 1.6 How can I print PostScript on a non-PostScript printer?
-
- You need a tool that converts to something that your printer knows
- how to print. Use Freedom of Press, GhostScript, pageview, TScript,
- or UltraScript PC. Or, use a printer cartridge if your printer
- manufacturer sells one.
-
-
- Subject: 1.7 How do I print a file containing 8-bit characters?
-
- | If you only have Transcript you just don't. Transcript uses
- | "enscript" to convert a "text" file to a PostScript file and
- | "enscript" is not able to deal with 8-bit characters.
- |
- | You have to use one of the many programs that convert text to
- | PostScript, like a2ps, which not only handles the 8-bit characters
- | in a very nice way using the standard ISO Latin 1 character
- | encoding, but it also produces outputs in a series of very well
- | set, nice an paper saving formats, much nicer than the ones
- | produced by enscript.
-
-
- Subject: 1.8 What other graphics languages are there?
-
- HPGL is for pen plotters. PCL is for HP Laser printers (and
- compatibles). Both are by HP, and PCL5 is supposed to allow
- inclusion of HPGL commands, preceded by an appropriate escape code,
- however I have found this to give errors and abort even for simple
- HPGL code that plots fine on a plotter.
-
- Subject: 2 Printers
-
-
- Subject: 2.1 How can I get my printer to talk back to me?
-
- Experts using a level 2 printer can use the SerialOff.PS and
- SerialEHandlder.ps programs to communicate bidirectionally to the
- printer.
-
- If you just need the error returns from the printer, you can spawn
- a
-
- cat < port >> logfile&
-
- in your system startup. Then you will get a log of everything the
- printer says. This works on any serial-port connected printer.
-
-
- Subject: 2.2 Should I leave my printer on?
-
- | Most laser printers consume several hundred watts while idle in
- | order to keep the fuser warm. A few models shut down automatically
- | after a while, and this feature seems to be the wave of the future.
- |
- | Wear-and-tear due to power cycling is no longer the problem it once
- | was. The advice in the FAQ would have been appropriate in the
- | 1970s, but no longer. A good modern rule of thumb is to turn off
- | electronic equipment if it won't be used for a few hours (overnight
- | or weekends), otherwise to leave it on.
-
-
- Subject: 2.3 How do you print double-sided on a single-sided printer?
-
- | The biggest problem comes in jamming when you feed the document
- | through the second time to print the backside. To minimize this
- | problem, you want to minimize the curl that the paper acquires in
- | passing through the printer. So, if your printer normally stacks
- | face down (to make the page order come out right) rearrange it
- | (often this involves flipping out a plastic paper catcher on the
- | end) so the pages feed straight through and stack face up. Then
- | acquire and build psutils, and run your document through the
- | following commands:
- |
- |0' <original.ps >odd.ps
- | pstops '2:1U@1(1w,1h)' <original.ps >even.ps
- |
- | This puts the even and odd pages in different files, and rotates
- | the even pages 180 degrees so the top and bottom are reversed. This
- | lets you feed the paper back through with the old trailing edge at
- | the front; since pages get the most severe curl at the leading edge
- | this also helps reduce jamming. Print odd.ps, flip the output pile
- | face down and backwards, put it back in the input magazine, and
- | print even.ps.
- |
- | If the printer is fed by a shared print queue, you can leave the
- | paper magazine out after you put the first pass pages into it,
- | before you submit the second half, then make sure your job is at
- | the front of the queue (waiting for you to replace the paper tray)
- | before you reinsert the tray.
- |
- | Alternatively, particularly with serially-interfaced printers,
- | there's a long enough delay to pull the paper tray out between two
- | print jobs, so you can submit them both, then pull the tray out as
- | soon as the last page of the first job finishes. The ``pstops''
- | invocations report how many pages they emit, so you can count pages
- | to determine when the first one is done.
-
-
- Subject: 2.4 How do I suppress the power-on start page?
-
- Disabling the start page is described in your printer's PostScript
- supplement. The most common sequence is ``serverdict begin 0
- exitserver statusdict begin false setdostartpage end''.
-
-
- Subject: 2.5 How do I make a downloaded font ``persistent''?
-
- %!PS-Adobe-2.0 ExitServer
- %%BeginExitServer: 0
- serverdict begin 0 exitserver
- %%EndExitServer
- % Test for existence of font, abort if present.
- % This won't work on a printer with a hard disk!
- /str 32 string def
- /Eurostile dup FontDirectory exch known
- { str cvs print ( is already loaded!\n) print flush quit }
- { (loading font ) print str cvs print (\n) print flush }
- ifelse
- %% Font follows...
-
- The part following ``%%EndExitServer'' is optional. If you use
- it, change Eurostile to the name of the font. The default PFA
- behavior is to use up additional VM for the new copy if another
- copy has already been downloaded.
-
-
- Subject: 2.6 How do I remove a persistent (``permanent'') downloaded font?
-
- In PostScript Level 2, you can use the undefinefont operator to
- remove fonts selectively.
-
- The only reliable method in PostScript Level 1 is to restart the
- printer, for example with:
-
-
- serverdict begin 0 exitserver
- systemdict /quit get exec
-
- Of course, the real solution is just to not download persistent
- fonts unless you really want them to persist indefinitely. If you
- want them only for one job, download them as part of the job.
-
-
- Subject: 2.7 How do I reset the printer without power-cycling?
-
- Most printers can be reset by issuing ``serverdict begin 0
- exitserver systemdict /quit get exec''.
-
-
- Subject: 2.8 About saving files
-
- Adobe recommends that driver writers do not put EOT (control-D)
- into files when saving to disk. Normally, the EOT is a part of the
- protocol for parallel and serial ports and never hits the
- PostScript interpreter.
-
- Drivers that do embed EOD can create problems for devices that
- allow other communication methods (e.g. AppleTalk, Ethernet, and
- SCSI) where the EOT is not part of the communications protocol. It
- is useful to redefine EOT in these instances so that the
- interpreter does not generate an error. The recommended
- redefinition is:
-
-
- (\004) cvn {} def
-
- This should convert any stand-alone embedded EOTs into a null
- procedure.
-
-
- Subject: 2.9 What's the control-D business?
-
- PostScript printers communicating over serial lines use control-D
- as an end of job indicator. The host computer should then wait for
- the printer to send a control-D back to indicate that the job has
- finished. Managing the serial protocol between host and printer
- should be done by some form of print service, but if you're unsure
- whether your print service is doing it, it's an idea to send one
- yourself.
-
- PC type computers frequently do not have any kind of printer
- manager and applications end up sending control-D characters to the
- printer, sometimes before and after a job. PC applications
- frequently embed a control-D as the first character in the print
- file, presumably to flush out any other jobs, and thereby breaking
- | the Adobe Document Structuring Conventions. There is a way to turn
- | off generation off the control-D in Windows (anybody know it?).
-
- If you want to prevent applications from doing this, you could use
- a spooler which would look at the end of every outgoing file and
- drop the control-D on the end if there happened to be one.
-
- If you want a spooler, check out lprps.
-
-
- Subject: 2.10 Why does the printer say ``still busy'' when my document is
- done printing?
-
- Sometimes when you finish a print job, the printer ``Ready'' light
- keeps flashing for a minute or so. Somehow, the printer has
- received some character(s) after the control-D which was sent
- immediately after the PostScript file. The most common is that a
- newline has been inserted after the control-D. The printer took
- these character(s) to be another program, and eventually timed-out
- while waiting for the rest of it. This can happen because of the
- host not waiting for the printer to finish.
-
-
- Subject: 2.11 How should I set up my spoolers?
-
- Since PostScript usually is prefixed with ``%!'', it's easy to
- educate your spooler to autoselect between passing raw PostScript
- through to the printer or doing an ``ASCII-to-PostScript''
- conversion first. There are many packages that will do this,
- including Transcript and psxlate.
-
- Unfortunately, many PostScript applications generate PostScript
- without a proper ``%!'' magic cookie.
-
- The spooler should be responsible for transmitting the ``job
- termination code'' (a control-D on serially-connected printers) to
- the printer, not the application. Do yourself a favor and disable
- (or filter out) control-Ds in your applications and generate them
- in the spooler. This will be far more reliable in the face of
- arbitrary input.
-
-
- Subject: 2.12 What are PPD files?
-
- Adobe Postscript Printer Description (PPD) files describe how to
- use the special features for a specific Postscript printer. They
- are suppose to be human-readable, but they are really only readable
- by PostScript gurus. It is the responsibility of the printer
- manufacturer to supply PPD files. However, the Adobe mail server
- has many of them. (see the Section 6, ``About Adobe'')
-
- | Adobe Technical Document 5003 - PPD Specification describes how to
- | read and parse PPD files. You can find it on the Adobe mail server,
- | or by anonymous ftp to
- | ftp.adobe.com:/pub/adobe/Documents/5003.PPD_Spec.ps.
-
-
- Subject: 2.13 What's a timeout error?
-
- | The wait timeout is the maximum time the PostScript interpreter
- | will wait for input before aborting. The timeout interval begins
- | when the interpreter finishes executing everything it has received
- | so far and starts waiting for the host to send it more data. If
- | this timeout expires and no more data arrives, a timeout occurs.
- |
- | In particular, a compute-bound job (or one that goes into an
- | infinite loop) will not encounter a wait timeout, since it is not
- | waiting. The long diatribe about the need to "keep sending stuff"
- | and problems with long compute-bound jobs is totally off the mark.
- | The data channel may stop due to flow control, and may stay stopped
- | for long periods if the printer is very busy. This is perfectly OK
- | and won't cause a timeout.
- |
- | Don't disable the wait timeout. The whole point of the wait timeout
- | is to prevent the interpreter from being indefinitely tied up by a
- | host application that has crashed, a communication channel that has
- ected, or whatever. This is particularly important for
- | networked printers. The only situation in which disabling timeouts
- | is appropriate is when debugging applications or drivers, since you
- | don't want the printer timing out while the host is at a breakpoint
- | or something.
-
- Subject: 3 Formats and Conversions
-
- This section describes formats that can be converted to and from
- PostScript, and how to convert them. Encapsulated PostScript and
- Fonts have their own sections.
-
-
- Subject: 3.1 How can I convert PostScript to some other graphics format?
-
- Since PostScript is not just a picture-description language, but in
- fact a complete programming language, you will need a complete
- PostScript interpreter to convert or display a PostScript graphic.
- See the comp.sources.postscript FAQ for an index of all PostScript
- related programs.
-
- Try using GhostScript.
-
-
- Subject: 3.2 How can I convert HPGL to PostScript?
-
- | Use hp2ps.
-
-
- Subject: 3.3 How can I convert DVI to PostScript?
-
- Use dvips.
-
-
- Subject: 3.4 How can I convert HP Laserjet language (PCL) to PostScript?
-
- Use lj2ps for simple PCL. Alternatively, another lj2ps, from
- psroff3.0, is a little more complete.
-
- hp2pbm can convert all of PCL4 (up to and including rasters,
- downloaded fonts and macros) into PostScript, G3 and any other
- PBM-supposed format.
-
-
- Subject: 3.5 How can I convert TeX PK format font to PostScript?
-
- Psroff3.0 contains programs that can convert TeX PK format or HP
- SFP format fonts into PostScript bitmap fonts along with
- rearranging encoding, etc. While bitmap bfonts scale poorly, this
- is sometimes of use in special circumstances.
-
-
- Subject: 3.6 How do I embed PostScript into troff?
-
- Most troffs can be ``coerced'' into including PostScript figures.
- The best approach is a configuration that takes EPS PostScript and
- can automatically scale it, or tell troff how big the picture is.
- Groff and DWB 3 have this built in.
-
- psfig is an add-on EPS inclusion handler that can add this
- capability to other versions of troff, provided that a compatible
- PostScript driver is used (Psroff 3.0 for ditroff or CAT troff,
- Transcript for ditroff). See the comp.text FAQ for more detail.
-
-
- Subject: 3.7 How do I embed PostScript into LaTeX or TeX?
-
- You should use an add-on program for seamless PostScript inclusion.
-
- Use psfig.
-
- If your LaTeX is simple, but your PostScript is fancy, try using
- LameTeX.
-
- If you need a good compromise, use pstricks.
-
- See the comp.text.tex FAQ.
-
-
- Subject: 3.8 How can I convert an image to PostScript?
-
- First determine what format your images are in. PBMPLUS will have
- converters for most image formats.
-
- To convert an image to PostScript in X windows, you can display the
- image on the screen, and grab it with xv, which can save the image
- in a PostScript file.
-
- A more general alternative in X windows would be to use the PPM,
- PGM and PBM utilities in the X11R4 and X11R5 distributions.
-
-
- Subject: 3.9 How can I convert ASCII text to PostScript?
-
- Unless your printer is smart about raw ASCII, you can't just send
- the ASCII to a PostScript printer, because the printer will attempt
- to interpret your ASCII file as PostScript code. You need a program
- which will wrap some PostScript code around your ASCII file.
-
- Try any of the following programs: asciiprint.ps, ato2pps, cz,
- ETSR, i2ps, lpp, lwf, POSTPRN, printer, psf, psfx80, PSR, ps2txt,
- pstext, swtext, text2ps, TranScript, spike.ps, enscript, nenscript,
- a2ps, asc2ps, ascii2ps, crossword.ps, double.ps, landscape.ps,
- numbered.ps, portrait.ps, or wide.ps.
-
- If you want to make something fancy, why not use a word processor?
- Most of them can ``include'' ASCII directly from a file and produce
- PostScript.
-
-
- Subject: 3.10 How can I convert PostScript to ASCII?
-
- In general, when you say ``I want to convert PostScript to ASCII''
- what you really mean is ``I want to convert MacWrite (which makes
- PostScript output) to ASCII'' or ``I want to convert somebody's TeX
- document (which I have in PostScript) to ASCII''.
-
- Unfortunately, programs like these (if they're smart) do a lot of
- fancy stuff like kerning, which means that where they would
- normally execute the postscript command for
-
-
- ``print water fountain''
-
- instead they execute the postscript command for
-
-
- ``print wat'' (move a little to get the spacing *just* right)
- ``print er'' (move a little to get the spacing *just* right)
- ``print foun'' (move a little to get the spacing *just* right)
- ``print tain'' (move a little to get the spacing *just* right)
-
- So if I write a program to look through a PostScript file for
- strings, like ps2ascii.pl, It can't tell where the words really
- end. Here my program would see 4 strings
-
-
- ``wat'' ``er'' ``foun'' ``tain''
-
- And it doesn't see any difference between the spacing between
- ``found'' and ``tain'' (not a word break) and the spacing between
- ``er'' and ``foun'' (a real word break).
-
- The problem is that PostScript for text formatting is usually
- produced machine generated by a text formatter. A PostScript
- generator like dvips might have a special command like ``boop''
- that differentiates between a real world break and a fake one. But
- every text formatter that generates PostScript has their own name
- for the ``boop'' command.
-
- So you really want a ``PostScript to ASCII converter for dvips
- output''.
-
- The only general solution I can see would be to redefine the show
- operator to print out the currentpoint for every letter being
- printed, like gs2asc, and then make up an ASCII page based on this
- by sticking ASCII characters where they go in a two-dimensional
- array. That would convert PostScript to ASCII ``formatted''.
-
- But even that wouldn't solve the problem, because special bitmap
- fonts and and standard fonts like Symbol don't always print a ``P''
- when you say the letter ``P''. Sometimes they print the greek Pi
- symbol or a chess piece or a ZapfDingBat.
-
- Use ps2a, ps2ascii, ps2txt, ps2ascii.ps or ps2ascii.pl.
-
-
- Subject: 3.11 How do I convert between PFB, PFA, Mac, PFM, and AFM?
-
- Write or call Y and Y Software, listed in the fonts section as a
- | vendor. For NEXTSTEP systems, write or call Trilithon Software,
- | also listed in the fonts section as a vendor.
-
-
- Subject: 4 Fonts
-
- This section answers questions about fonts as they pertain to
- PostScript. See the comp.fonts FAQ for more information about
- fonts.
-
-
- Subject: 4.1 What are .PFB and .PFA files?
-
- ``PFB'' stands for Printer Font Binary, and is a STORAGE FORMAT in
- which Adobe Type 1 font programs are usually distributed for IBM PC
- and compatibles. Many application programs support fonts in PFB
- format, and refer to them as ``downloadable''.
-
- Macintosh uses a radically different binary storage format than PC.
- See below for some details.
-
- PFB files usually appear in several sections, each section preceded
- by a binary header containing the type of the section (ASCII,
- binary, or end of file) and the length of the section. Because of
- the presence of the binary section headers, and the possible
- presence of binary data sections, PFB files cannot in general be
- sent directly to a PostScript printer. Application programs like
- dvips which use fonts in PFB format unpack the font into ASCII
- format before sending it to the printer. If you would like to use a
- font which is in PFB format, you must unpack the font to make a PFA
- (Printer Font ASCII) file. Adobe Systems supply a font downloader
- for PC's which turns the PFB format into PFA format on the fly as
- it's being downloaded.
-
- ``PFA'' stands for Printer Font ASCII, which is the unpacked
- version of a PFB file. In PFB, the data is stored as-is. In a PFA,
- any binary data present in a former PFB file is stored as ``ascii
- hex''--meaning each byte of binary data is turned into two ASCII
- characters representing the hexdecimal value.
-
- Once you have the PFA file, just send it to the printer ahead of
- your file, and use the font like any other. There are several
- programs which can do the conversion from PFB to PFA for you. Try
- t1utils.
-
- | Details of the PFB format can be found in Adobe Technical Note #
- | 5040, ``Supporting Downloadable PostScript Fonts''.
-
-
- Subject: 4.2 How does Macintosh Store PostScript Fonts?
-
- | To start off understanding how Macintosh stores PostScript fonts,
- | first you need to know that a Macintosh file consists of two
- | different parts, called ``forks''. The two forks of a Macintosh
- | file are called the ``resource fork'' and the ``data fork''.
- |
- | The data fork normally contains the data of the file. In the case
- | of a text editor, for instance, the data fork contains the text.
- |
- | The resource fork contains system (resource) information about the
- | file: who owns the file, its icon maybe, and other information. The
- | various bits of information in the resource fork are contained in a
- | complex structure. One of the items is a resource map, detailing
- | the different kinds of resources and their positions in the
- | resource fork.
- |
- | The reason you need to know all this is because PostScript Type 1
- | fonts are stored in the resource fork of Macintosh files. Why this
- | was done is a historical mystery now, because the information could
- | just as easily have been stored in the data fork in a format
- | similar to PFB, and unpacking fonts would have been a whole lot
- | easier.
- |
- | PostScript Type 1 fonts are stored in resources with the name
- | POST''. If you aren't familiar with the layout of resource forks,
- | study the ``Resource Manager'' chapter of the Inside Macintosh
- | books. Details of Macintosh PostScript Type 1 storage format can be
- | found in Adobe Technical Note 5040, ``Supporting Downloadable
- | PostScript Fonts''. The information in the Adobe Technical Note is
- | incomplete in the sense that you need to understand the layout of
- | Macintosh resource forks to make sense of the information.
- |
- | In the majority of cases, you can assume that the POST resources
- | are stored contiguously in the resource fork. Unfortunately, there
- | are a few cases where this isn't true, and the resulting PFA file
- | will be incorrect.
- |
- | POST resources occur in five types. Type 0 are comments. Type 1 are
- | ASCII data. Type 2 are binary data. Type 3 are end of this font
- | program. Type 4 means that the remainder of this font appears in
- | the data fork of the file! Type 5 means end of file.
- |
- | Having talked about PostScript Type 1 fonts being stored in the
- | resource fork, why is there a case where the font comes out of the
- | data fork? Some PostScript Type 3 fonts are stored in this manner.
-
-
- Subject: 4.3 How can I convert a PostScript font to TeX's PK format?
-
- Use ps2pk or try out the GNU font utilities in fontutils.
-
-
- Subject: 4.4 Why are Adobe fonts hidden?
-
- In PostScript level 1, Adobe's fonts were hidden because they
- didn't want people pirating copies instead of paying for them.
- That's why you can't do a pathforall on a charpath.
-
- PostScript Level Two has removed the restriction, in the words of
- the new Red Book, ``for most fonts''. There will still be some
- vendors who will want to restrict access. Japanese font vendors,
- for example, are concerned about piracy -- given the work that goes
- into an 8,000-character Kanji font.
-
-
- Subject: 4.5 How do I get bitmap representations of Adobe fonts?
-
- On the IBM PC, use the Font Foundry program included with the font.
- If you don't have it, contact Adobe for an upgrade.
-
-
- Subject: 4.6 What are some good ftp sites for fonts?
-
-
- ftp.cs.umb.edu
- sumex-aim.stanford.edu
- archive.umich.edu
- ftp.cica.indiana.edu /pub/pc/win3/fonts
- colonsay.dcs.ed.ac.uk /pub/postscript/fonts
-
-
- For the NeXT platform, fonts are available on the NeXT-FTP-archives,
- sonata.cc.purdue.edu :/pub/next/graphics/fonts
- fiasko.rz-berlin.mpg.de :/pub/next/fonts
-
- For Macintosh, look in sumex-aim.stanford.edu,
- mac.archive.umich.edu, and ftp.cs.umb.edu (192.12.26.23), in
- pub/tex/ps-screenfonts.tar.Z.
-
- Color PostScript samples and many other PostScript programs are
- available from irisa.irisa.fr.
-
-
- Subject: 4.7 How can I re-encode a font?
-
- See ddev.ps for an example for code that does this. You can find it
- by ftp to wilma.cs.brown.edu:pub/postscript/ddev.ps.
-
-
- Subject: 4.8 What's the difference between a Type 1 and a Type 3 font?
-
- The Type 1 font format is a compact way of describing a font
- outline using a well-defined language that can be quickly
- interpreted. The language contains operations to provide the
- rasterizer with additional information about a character, known as
- hints. The hints are additional information which describes how to
- adjust the representation of the character to make it look good
- when the font size is small compared to the device resolution. The
- Type 1 font format is defined in the book ``The Adobe Type 1 Font
- Format'', also known as the black book, for the colors on its
- cover.
-
- The Type 1 font format has nothing to do with TrueType, which is
- another font format defined by Apple. The Type 1 font format has
- been around quite a while, and is used on a wide variety of
- platforms to obtain scalable fonts.
-
- Most clone interpreters will not have Adobe's proprietary rendering
- technology which interprets font hints to improve the appearance of
- fonts shown at small sizes on low-resolution devices. The
- exceptions (PowerPage and UltraScript) have their own hint
- interpreters.
-
- The Type 3 font format is a way of packaging up PostScript
- descriptions of characters into a font, so that the PostScript
- interpreter can rasterize them.
-
- It is easier to create a Type 3 font program by hand than to create
- the corresponding Type 1 font program. Type 3 font programs have
- access to the entire PostScript language to do their imaging,
- including the 'image' operator. They can be used for bitmapped
- fonts, although that is certainly not a requirement. The Type 3
- font format contains no provisions for 'hinting', and as such Type
- 3 font programs cannot be of as high a quality at low resolutions
- as the corresponding Type 1 font program.
-
- Both formats are scalable formats, and both can be run on any
- PostScript interpreter. However, because of the requirement that a
- Type 3 font program have a full PostScript interpreter around, Type
- 3 font programs cannot be understood by the Adobe Type Manager.
- Only Type 1 font programs can.
-
- Why bother making a font that's just made up of bitmaps? Once a
- character from a font has been rendered, the bitmap will be saved
- in a cache, and another instance of the same character at the same
- size and orientation can be quickly drawn without recalculation.
-
- Because of Adobe Type Manager's wide availability on a large number
- of platforms (PC, Mac, and Unix), the Type 1 font format makes an
- excellent cross-platform scalable font standard.
-
-
- Subject: 4.9 What vendors sell fonts for PostScript printers?
-
- PostScript font vendors are many and varied. Here is a partial
- list.
-
-
-
- Adobe Systems
- sells a variety of fonts. With the huge number of third-party
- Type 1 vendors, in recent years Adobe have specialized in
- creating their own ``Adobe Originals'' -- high-quality fonts,
- some of which are their renditions of classic faces (Adobe
- Garamond) and some of their own devising (Stone, Utopia, ...).
- Adobe Systems, 1585 Charleston Road, Mountain View, CA 94039.
- (415) 961-4400
-
-
- AGFA Compugraphic,
- ts 01887. (508)
- 658-5600.
-
-
- Bear Rock Technologies
- specializes in bar code fonts. 4140 Mother Lode Drive, Suite 100,
- Shingle Springs California 95682.
-
-
- Bitstream,
- Athenaeum House, Cambridge, MA 02142. (617) 497-6222.
-
-
- | Callifonts
- | has a really nice looking set of calligraphy typefaces. P.O. Box
- | 224891, Dallas, TX 75222. (214) 504-8808.
-
-
- Casady and Greene,
- 22734 Portola Drive, Salinas, CA 93908. (408) 484-9228.
-
-
- Ecological Linguistics,
- specializes in non-Roman alphabets. Ecological Linguistics, P. O.
- Box 15156, Washington D. C. 20003.
-
-
- Emigre Graphics
- 4475 ``D'' Street / Sacramento CA 95819 (800) 944 9021 ] Over 70
- faces, all PostScript Type 1 ATM compatible, including the
- omnipresent Modula and infamous Template Gothic. Almost all faces
- are ``must haves'' for graphic designers. Call for free catalog.
-
-
- | The Font Company
- | 12629 North Tatum Boulevard, Suite 210, Phoenix Arizona 85032.
- | (602) 998-9711.
-
-
- Image Club,
- # 5 1902 11th St Southeast, Calgary, Alberta T2G 2G2, Canada.
- (403) 262-8008.
-
-
- | Lanston
- | specializes in display faces.
-
-
- Letraset
- specializes in fancy kinds of script fonts, Letraset, 40
- Eisenhower Drive, Paramus, New Jersey 07652. (201) 845-6100
-
-
- Linguists Software
- specializes in non-Roman alphabets (Farsi, Greek, Hangul, Kanji,
- etc.) Linguists Software, P. O. Box 580, Edmonds, Washington
- 98020-0580. (206) 775-1130.
-
-
- Monotype,
- 53 West Jackson Boulevard, Suite 504, Chicago, IL 60604.
-
-
- Page Studio Graphics,
- Chandler, Arizona, specialize in symbols fonts such as Mac icons,
- keyboards, and others, Page Studio Graphics, 3175 North Price
- Road, # 1050, Chandler, Arizona 85224. (602) 839-2763.
-
-
- | Software Complement
- | specializes in creating logo fonts. 8 Penn Avenue, Metamoras,
- | Pennsylvania 18366 USA.
-
-
- | The Font Company
-
-
- | TreacyFaces
-
-
- | Trilithon Software,
- | Portola Valley, California can supply fonts from the Adobe Type
- | library for NEXTSTEP. If you're working on NEXTSTEP, getting
- | fonts in the correct form with ancillary information and
- | downloaders and such is important. You can convert Mac fonts to
- | NEXTSTEP (PFA) format, but NEXTSTEP demands AFM files as well,
- | and many Mac/PC font vendors omit AFM files because Mac/PC apps
- | don't use them. For Adobe fonts for NEXTSTEP, save yourself a lot
- | of hassle by getting the fonts from Trilithon.
- |
- | If you want non-Adobe fonts for NEXTSTEP, Trilithon Software can
- | supply font conversion tools to go from Macintosh or PC format to
- | NEXTSTEP format. The conversion tools generate AFM files if none
- | are supplied with the fonts, and sanity check AFM files for
- | correctness when they are supplied.
- |
- | Two Ohlone, Portola Valley, California 94028 USA. Telephone:
- | (415) 325-0767, FAX: (415) 325-0768. E-Mail: info@trilithon.com.
-
-
- URW
- supplies high-quality fonts at low prices. They are also the
- creators of the top of the line font creation and editing
- software called Ikarus. URW, 4 Manchester Street, Nashua, New
- Hampshire 03060. (603) 882-7445.
-
-
- Y and Y Software
- , 106 Indian Hill, Carlisle Massachusetts 10741 USA. (508)
- 371-3286. Sells a Font Metric Manipulation Package for DOS with
- lots of interesting utilities.
-
- Many more font vendors exist. Look in magazines and other sources.
- Check the Usenet newsgroup comp.fonts. Look in U & lc, published by
- ITC, for long lists of vendors.
-
-
- Subject: 4.10 What are ATM fonts?
-
- There has been a rash of misunderstanding about the nature of Type
- 1 fonts and what people call ATM fonts. ATM fonts are Adobe Type 1
- fonts. ATM stands for Adobe Type Manager -- a utility to render
- smooth characters on Macintosh and PC screens, from font outlines
- (Type 1 fonts) instead of using bitmap fonts. In one sense, there's
- no such thing as an ``ATM font'' -- ATM interprets Type 1 fonts, so
- there's no need to create a new name. A correctly constructed Type
- 1 font can be interpreted by ATM.
-
-
- Subject: 4.11 What are Multiple Master Fonts?
-
- Multiple Master Fonts are an extension to the Adobe font format.
- providing the ability to interpolate smoothly between several
- ``design axes'' from a single font. Design axes can include weight,
- size, and even some whacko notions like serif to sans serif.
- Adobes' first Multiple Master Font was Myriad -- a two-axis font
- with WEIGHT (light to black) on one axis, and WIDTH (condensed to
- expanded) along the other axis. In the case of Myriad, there are
- four ``polar'' designs at the ``corners'' of the design space. The
- four designs are light condensed, black condensed, light expanded,
- and black expanded.
-
- Given polar designs, you can set up a ``weight vector'' which
- interpolates to any point within the design space to produce a
- unique font for a specific purpose. So you can get a ``more or less
- condensed, somewhat black face''.
-
-
- Subject: 4.12 Do I need a Level Two printer to use Multiple Master Fonts?
-
- No -- Multiple Master Fonts can be used on any PostScript printer.
- Multiple Master Fonts need a new PostScript operator known as
- makeblendedfont. The current crop of Multiple Master Fonts supply
- an emulation of this operator so the printer doesn't need this
- operator.
-
- A short tutorial on Multiple Master Fonts and makeblendedfont
- appears in PostScript by Example, by Henry McGilton and Mary
- Campione, published by Addison-Wesley.
-
-
- Subject: 4.13 What are Type 4 fonts?
-
- Type 4 fonts are actually Type 3 fonts which contains a Type 1
- font. They're stored on hard disk in a special way to save space
- when they're loaded into printer RAM by findfont. Your interpreter
- must have the extra PostScript operator CCrun to handle Type 4
- fonts. They are usually used for Kanji (Japanese) characters.
-
-
- Subject: 4.14 What are Type 5 fonts?
-
- Type 5 fonts are actually Type 1 fonts, but stored in printer ROM
- in a special compressed format. They're also known as CROM fonts
- (for Compressed ROM fonts). The contents of the CharStrings entries
- in Type 5 will probably be different from Type 1.
-
-
- Subject: 4.15 Is there an editor for Type 1 Fonts?
-
- Fontographer for the Macintosh and MS-Windows under DOS is
- available from Altsys Corporation, 269 West Renner Road,
- Richardson, Texas 75080 USA. (214) 680-2060.
-
- Ikarus-M is availble for the Macintosh from URW, Harksheider
- Strasse 102, 2000 Hamburg 65, GERMANY. (040) 60 60 50 Or URW
- Software and Type, 4 Manchester Street, Nashua, New Hampshire
- 03060. (800) 229-8791 in USA. (603) 882-7445 otherwise.
-
- Acknowledgments
-
-
- This FAQ was compiled based heavily on the contributions of and
- with the help of Henry McGilton, Dick Dunn, Howard Gayle, Dan
- Carrigan, Carl Orthlieb, Ed Garay, Robert Lerche, Bruno Hall, Tom
- Epperly, and Chris Lewis.
-
- Also thanks to contributors Paul Balyoz, Karl Berry, Jerry Black,
- Charles Cashion, Jim DeLaHunt, Leonard Hamey, Chris Herborth, Steve
- Kinzler, Bill Lee, Timo Lehtinen, Carl Lydick, Otto Makela, Bill
- Pringle, Tony Valsamidis, and Jamie Zawinski.
-
- Special thanks to Ken Porter, who originally compiled and organized
- this FAQ.
-
-
-
- Ver Date Reason
- ----------------------------------------------------------------
- 1.00 12-18-90 Creation by Ken Porter
- 1.06 5-29-91 expanded on EPS explanation, general updates
- 2.00 10-25-92 Brought up to date and expanded, by Jon Monsarrat
- 2.1 5-21-93 Revised because of new comp.sources.postscript group.
- 2.2 12-26-93 Finally incorporated all the '93 comments and suggestions.
-
-
- This FAQ is copyright (C) 1994 by Jonathan Monsarrat. Permission is
- granted to freely edit and distribute as long as this copyright
- is document was written with the LaTeX language and formatted by
- LameTeX, the PostScript hacker's LaTeX.
-
-
- %! Jon Monsarrat jgm@cs.brown.edu moderator, comp.sources.postscript %!
- (LcHdBidZi_hdQ6[PaVa1b4c6F"J4b/>$O<)(di_zk{:UFfUg;ABF)(2n>]Eh:u?<)(P"M#R(:$T<)
- ([gXfSZ]f"dZbeZeb^fH;`?dR=ZS7)(K P!U!: H<)(9l9cCf:o?$)(7W4]6`:X;=)(U"W#_%:"R-)
- (A 5"<&Y%K"F"M,M,S)i3e.M5F_PZR9>lP-)(wBxEuEs7x;uBq:q<q>hFh7o:=Nj<)(Z#]#b#:$R-)
- (m+m+k3S!R+d,;"^<)(GFP"RamZf;TAP{X{fd<{C7)(4840N2:6N=)([ Z#^&:!c<)(<%?$C$:#8<)
- (D!J"L#:!B<)/a{def}def/M{exch}a/S{repeat}a/Q{{40 add}if}a 18{{}forall/R M a/x 2
- /y 3/z 5 3{R M mod 1 eq a}S x Q M y Q moveto 57 sub{3{y Q M x Q M 6 2 roll}S
- curveto}S z{fill}{stroke}ifelse}S showpage
-
-
-